package org.game.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * <p>
 * 1.整数或者小数：^[0-9]+\.{0,1}[0-9]{0,2}$ 只能输入数字："^[0-9]*$"<br>
 * 2.只能输入n位的数字："^\d{n}$" 只能输入至少n位的数字："^\d{n,}$" 只能输入m~n位的数字：。"^\d{m,n}$"<br>
 * 3.只能输入零和非零开头的数字："^(0|[1-9][0-9]*)$"<br>
 * 4.只能输入有两位小数的正实数："^[0-9]+(.[0-9]{2})?$"<br>
 * 5.只能输入有1~3位小数的正实数："^[0-9]+(.[0-9]{1,3})?$"<br>
 * 6.只能输入非零的正整数："^\+?[1-9][0-9]*$" 只能输入非零的负整数："^\-[1-9][]0-9"*$"<br>
 * 7.只能输入长度为3的字符："^.{3}$" 只能输入由26个英文字母组成的字符串："^[A-Za-z]+$"<br>
 * 8.只能输入由26个大写英文字母组成的字符串："^[A-Z]+$" 只能输入由26个小写英文字母组成的字符串："^[a-z]+$"<br>
 * 9.只能输入由数字和26个英文字母组成的字符串："^[A-Za-z0-9]+$"<br>
 * 10.只能输入由数字、26个英文字母或者下划线组成的字符串："^\w+$"<br>
 * 11.验证用户密码："^[a-zA-Z]\w{5,17}$"正确格式为：以字母开头，长度在6~18之间，只能包含字符、数字和下划线<br>
 * 12.验证是否含有^%&',;=?$\"等字符："[^%&',;=?$\x22]+"<br>
 * 13.只能输入汉字："^[\u4e00-\u9fa5]{0,}$"<br>
 * 14.验证Email地址："^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"<br>
 * 15.验证InternetURL："^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$" 
 * 16.验证电话号码:"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"正确格式为："XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX<br>
 * 17.验证身份证号（15位或18位数字）："^\d{15}|\d{18}$"<br>
 * 18.验证一年的12个月："^(0?[1-9]|1[0-2])$"正确格式为："01"～"09"和"1"～"12"<br>
 * 19.验证一个月的31天："^((0?[1-9])|((1|2)[0-9])|30|31)$"正确格式为；"01"～"09"和"1"～"31"<br>
 * 20.匹配中文字符的正则表达式： [\u4e00-\u9fa5] 匹配双字节字符(包括汉字在内)：[^\x00-\xff]<br>
 * </p>
 * 
 * @author admin
 *
 */
public class StringPattern {
	/**
	 * 只能输入汉字
	 */
	public static final String PATTERN_CHINESE = "[\u4e00-\u9fa5]+";
	/**
	 * 以字母开头，长度在6~18之间，只能包含字符、数字和下划线
	 */
	public static final String PATTERN_PASSWORD = "^\\w+$";
	/**
	 * 验证Email地址
	 */
	public static final String PATTERN_MAIL = "[0-9a-zA-Z]+@[0-9a-zA-Z]+\\.[0-9a-zA-Z]+";
	
	/**
	 * 只能输入数字,字母和下划线
	 */
	public static final String PATTERN_USERNAME = "^[a-zA-Z]\\w{5,17}$";
	
	/**
	 * 验证电话号码<br>
	 * 11位手机号码 例:18710195485 
	 * 3-4位区号，7-8位直播号码，1－4位分机号
	 * 010-88458558-525
	 */
	public static final String PATTERN_PHONENUMBER = "(\\d{11})|^((\\d{7,8})|(\\d{4}|\\d{3})-(\\d{7,8})|(\\d{4}|\\d{3})-(\\d{7,8})-(\\d{4}|\\d{3}|\\d{2}|\\d{1})|(\\d{7,8})-(\\d{4}|\\d{3}|\\d{2}|\\d{1}))$";
	
	/**
	 * 判断是否符合指定的正则表达式,可以继续封装
	 * @param value
	 * @param patterns
	 * @return
	 */
	public static boolean checkPattern(String value, String patterns) {
		Pattern pattern = Pattern.compile(patterns);
		Matcher matcher = pattern.matcher(value);
		if (matcher.matches()) {
			return true;
		}
		return false;
	}

}
